package com.toonan.system.dao;

import java.util.List;
import java.util.Locale;

import org.springframework.data.mongodb.core.query.Collation;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;

import com.google.common.collect.Lists;
import com.mongodb.client.result.UpdateResult;
import com.toonan.core.mongo.BaseMongo;
import com.toonan.core.util.WebplusMongo;
import com.toonan.core.util.WebplusUtil;
import com.toonan.system.model.Menu;
/**
 * 
 * @ClassName:  MenuDao   
 * @Description:菜单mongo操作类
 * @author: 陈骑元（chenqiyuan@toonan.com)
 * @date:   2022年2月21日 下午10:13:29     
 * @Copyright: 2022 www.toonan.com Inc. All rights reserved. 
 * 注意：本内容仅限于广州市图南软件有限公司内部传阅，禁止外泄以及用于其他的商业目
 */
@Service
public class MenuDao extends BaseMongo<Menu> {

	@Override
	protected Class<Menu> getEntityClass() {
		// TODO Auto-generated method stub
		return Menu.class;
	}
	/**
	 * 
	 * 简要说明：更新菜单状态
	 * 编写者：陈骑元（chenqiyuan@toonan.com）
	 * 创建时间： 2022年2月26日 下午8:39:29 
	 * @param 说明
	 * @return 说明
	 */
	public boolean udpateMenu(String cascadeId,Menu menu) {
		Query query=new Query();
		WebplusMongo.leftLike(query, "cascadeId", cascadeId);
		Update update=WebplusMongo.getUpdateByObject(menu);
		UpdateResult updateResult=this.mongoTemplate.updateMulti(query, update, this.getEntityClass());
		return updateResult.getModifiedCount()>0;
	}
   /**
    * 
    * 简要说明：根据主键查询相应的菜单
    * 编写者：陈骑元（chenqiyuan@toonan.com）
    * 创建时间： 2022年3月6日 下午10:40:48 
    * @param 说明
    * @return 说明
    */
	public List<Menu>  listMenu(List<String> menuIdList,String status){
		if(WebplusUtil.isEmpty(menuIdList)) {
			
			return Lists.newArrayList();
		}
		Query query=WebplusMongo.eq("status", status);
		WebplusMongo.in(query, "_id", menuIdList);
		Collation collation = Collation.of(Locale.CHINESE).numericOrdering(true);
		query.collation(collation);
		WebplusMongo.withSortAsc(query, "cascadeId");
		WebplusMongo.withSortAsc(query, "sortNo");
		return this.mongoTemplate.find(query, this.getEntityClass());
	}
}
